--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
docs/agents/conventions/frontend.md db8a58536a8024e64af9fd60e8ec8f1532fd50dc (db8a5853) Text, 698 B
Tc9d1d9# Frontend conventions
Applies when editing Ta5d6ff`meshchatx/src/frontend/**/*.{vue,js}`.
Tff7b72- Vue 3 Options API is the dominant pattern. Match the file you edit.
Tff7b72- API calls go through Ta5d6ff`window.api` (not ad-hoc axios imports in pages).
Tff7b72- Toasts: Ta5d6ff`ToastUtils.success|error|warning|info|loading|dismiss`.
Tff7b72- New top-level pages need: route in Ta5d6ff`main.js`, nav entry when discoverable, Ta5d6ff`en.json` keys, frontend tests.
Tff7b72- Do not use Ta5d6ff`_`-prefixed keys in Vue Ta5d6ff`data()` (Ta5d6ff`vue/no-reserved-keys`).
Tff7b72- File inputs: prefer broad Ta5d6ff`accept` for identity keys (Ta5d6ff`.bin,.key,.identity,application/octet-stream,*/*`). Database restore stays Ta5d6ff`.zip`.
Tff7b72- Prefer existing MaterialDesignIcon / layout patterns over new design systems.
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────